package main

import (
	"bufio"
	"fmt"
	"myApp/model"
	"os"
	"strconv"
	"strings"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

func main() {
	// 连接数据库
	dsn := "root:123456@tcp(127.0.0.1:3306)/user?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger: logger.Default.LogMode(logger.Info),
	})
	if err != nil {
		panic("failed to connect database")
	}

	// 打开 CSV 文件
	file, err := os.Open("/var/lib/mysql-files/push_7.csv")
	if err != nil {
		panic("failed to open file")
	}
	defer file.Close()

	// 创建一个 Scanner 来读取文件
	scanner := bufio.NewScanner(file)

	// 跳过 CSV 文件的首行
	if scanner.Scan() {
		// 首行通常是标题，这里不做处理
	}

	// 逐行读取 CSV 文件
	for scanner.Scan() {
		// 获取当前行的文本
		line := scanner.Text()

		// 拆分当前行的字段，这里假设字段由逗号分隔
		fields := strings.Split(line, ",")

		if len(fields) < 2 {
			fmt.Println("Skipping line with not enough columns:", line)
			continue
		}

		// 查询数据库中是否存在这个 cust_id 的记录
		user := model.CustInfo{}
		CustId := fields[0]
		RiskRatio, _ := strconv.ParseFloat(fields[1], 64)
		db.Model(&user).Where("cust_id = ?", CustId).Update("push_ratio", RiskRatio)
	}

	if err := scanner.Err(); err != nil {
		fmt.Fprintln(os.Stderr, "reading standard input:", err)
	}
}
